package com.MarkToTop.main;

import com.MarkToTop.util.Constant;

import java.util.ArrayList;
import java.util.List;

/**
 * @CreateDate: Created in 2022-06-23 10:18
 * @Author: hbian
 * @Description:   为了避免反复的创建和销毁障碍物对象，使用对象池思想。
 *                      提前创建，使用时拿走，出屏幕时归还给对象池
 */
public class BarrierPooL {
    private static List<Barrier> pool = new ArrayList<>();
    static {
        //初始化对象池中的对象 16-20
        for (int i = 0; i < Constant.INIT_Barrier_COUNT; i++) {
            pool.add(new Barrier());
        }
    }

    /**
     * 从池中获取一个对象
     * @return
     */
    public static Barrier get(){
        int size = pool.size();
        if(size >0){
            //移除并返回最后一个对象
            //System.out.println("池中拿走一个！");
            return pool.remove(size -1);
        }else {
            //池中没有对象
            return new Barrier();
        }
    }

    /**
     * 归还对象给对象池
     * @param barrier
     */
    public static void giveBack(Barrier barrier){
        if(pool.size() < Constant.MAX_Barrier_COUNT){
            //System.out.println("归还一个障碍物！");
            pool.add(barrier);
        }else {
            System.out.println("对象池满了！");
        }
    }
}
